'''
使用步骤：
1、 chart_name = Type() 初始化具体类型图表。
2、 add() 添加数据及配置项。 数据一般为两个列表（长度一致）。如果是字典或者是带元组的字典。可利用 cast() 方法转换。
3、 render() 生成 .html 文件。
1 创建图表实例	bar = Bar()
2 添加数据	bar.add(**kwargs)	添加数据及配置项。 数据一般为两个列表（长度一致）。如果是字典或者是带元组的字典。可利用 cast() 方法转换。
3 创建配置实例	config = PyEchartsConfig(**kwargs)
4 构建模板引擎	engine = EchartsEnvironment(pyecharts_config=config)
5 获取模板文件	tpl = engine.get_template('demo_tpl.html')
6 渲染	html = tpl.render(bar=bar)
7 写入目标文件	write_utf8_html_file('my_demo_chart.html', html)
'''
'''
        Part1:带标记线和标记点的柱状对比图（无堆叠效果）、颜色随机
'''
from pyecharts import Bar
from pyecharts_snapshot.main import make_a_snapshot

bar = Bar(title="柱形图", subtitle="测试数据", width=800, height=400)
# 数据添加和配置添加部分：
bar.add("服装A", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90], xaxis_name='商品名称',
        xaxis_name_pos='end',
        is_random=True, mark_point=['average'], mark_line=['min', 'max'])
bar.add("服装B", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [15, 30, 16, 50, 25, 80], xaxis_name='商品名称',
        xaxis_name_pos='end',
        is_random=True, mark_point=['average'], mark_line=['min', 'max'])
# 配置添加部分:
# 打印配置
bar.print_echarts_options()
bar.render()
make_a_snapshot('render.html', 'snapshot.png')

'''
        Part2:带标记线和标记点的柱状对比图（有堆叠效果）、颜色随机
'''
bar2 = Bar(title="柱形图2", subtitle="测试数据", width=800, height=400)
# 数据添加和配置添加部分：
bar2.add("服装A", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90], xaxis_name='商品名称',
         xaxis_name_pos='end',
         is_random=True, is_stack=True, mark_point=['average'], mark_line=['min', 'max'], legend_pos='right')
bar2.add("服装B", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [15, 30, 16, 50, 25, 80], xaxis_name='商品名称',
         xaxis_name_pos='end',
         is_random=True, is_stack=True, mark_point=['average'], mark_line=['min', 'max'], legend_pos='right')
# 配置添加部分:
# 打印配置
bar2.print_echarts_options()
bar2.render(path='render2.html')
make_a_snapshot('render2.html', 'snapshot2.png')

'''
 part3:dataZoom效果添加。用于区域缩放，从而能自由关注细节的数据信息，或者概览数据整体，或者去除离群点的影响。
'''
import random

attr = ["{}天".format(i) for i in range(30)]
v1 = [random.randint(1, 30) for _ in range(30)]
bar3 = Bar("Bar - datazoom - slider 示例")
bar3.add("", attr, v1, is_label_show=True, is_datazoom_show=True, datazoom_type='both')
bar3.render(path='render3.html')

'''
 part4:瀑布图显示
'''
from pyecharts import Bar

attr = ["{}月".format(i) for i in range(1, 8)]
v1 = [0, 100, 200, 300, 400, 220, 250]
v2 = [1000, 800, 600, 500, 450, 400, 300]
bar4 = Bar("瀑布图示例")
# 利用第一个 add() 图例的颜色为透明，即 'rgba(0,0,0,0)'，并且设置 is_stack 标志为 True
bar4.add("", attr, v1, label_color=['rgba(0,0,0,0)'], is_stack=True)
bar4.add("月份", attr, v2, is_label_show=True, is_stack=True, label_pos='inside')
bar4.render(path='render4.html')

'''
 part5：罗盘示例
'''
from pyecharts import Gauge

gauge = Gauge("仪表盘示例")
gauge.add("业务指标", "完成率", 66.66, angle_range=[225, -45],
          scale_range=[0, 100], is_legend_show=False)
gauge.render(path='render5.html')

'''
 part6:折线图示例
'''
from pyecharts import Line

line = Line("折线图示例")
line.add("商家A", attr, v1,
         mark_point=["average", {
             "coord": ["裤子", 10], "name": "这是我想要的第一个标记点"}])
line.add("商家B", attr, v2, is_smooth=True,
         mark_point=[{
             "coord": ["袜子", 80], "name": "这是我想要的第二个标记点"}])
line.render(path='render6.html')

'''
 part7:水滴图显示
'''
from pyecharts import Liquid

liquid = Liquid("水球图示例")
# liquid.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_outline_show=False)
liquid.add("Liquid", [0.6], is_liquid_outline_show=False)
liquid.render(path='render7.html')

'''
 part8:环形图显示
'''
from pyecharts import Pie

attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [11, 12, 13, 10, 10, 10]
v2 = [19, 21, 32, 20, 20, 33]
pie = Pie("饼图-玫瑰图示例", title_pos='center', width=900)
pie.add("商品A", attr, v1, center=[25, 50], is_random=True,
        radius=[30, 75], rosetype='radius')
pie.add("商品B", attr, v2, center=[75, 50], is_random=True,
        radius=[30, 75], rosetype='area',
        is_legend_show=False, is_label_show=True)
pie.render(path='render8.html')

'''
  part9:词云图
'''
from pyecharts import WordCloud

name = [
    'Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications',
    'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp',
    'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham',
    'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value = [
    10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112,
    965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.render(path='render9.html')

'''
    大合集
'''
from pyecharts import Page

page = Page()
page.add(bar)
page.add(bar2)
page.add(bar3)
page.add(bar4)
page.add(gauge)
page.add(line)
page.add(pie)
page.add(wordcloud)
page.render(path='totalrender.html')
